package com.ease.plugin.events {

	import com.ease.core.plugin.ResourceBase;

	import flash.events.Event;


	/**
	 * @private
	 *
	 * Event class for event dispatched by a PluginManager.
	 *
	 *  @langversion 3.0
	 *  @playerversion Flash 10
	 *  @playerversion AIR 1.5
	 *  @productversion OSMF 1.0
	 */
	public class PluginManagerEvent extends Event {
		/**
		 * The PluginManagerEvent.PLUGIN_LOAD constant defines the value of the
		 * type property of the event object for a pluginLoad event.
		 *
		 * @eventType pluginLoad
		 *
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion OSMF 1.0
		 */
		public static const PLUGIN_LOAD:String = "pluginLoad";

		/**
		 * The PluginManagerEvent.PLUGIN_LOAD_ERROR constant defines the value of the
		 * type property of the event object for a pluginLoadError event.
		 *
		 * @eventType pluginLoadError
		 *
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion OSMF 1.0
		 */
		public static const PLUGIN_LOAD_ERROR:String	= "pluginLoadError";

		/**
		 * Constructor.
		 *
		 * @param type The type of the event.
		 * @param bubbles Specifies whether the event can bubble up the display list hierarchy.
 		 * @param cancelable Specifies whether the behavior associated with the event can be prevented.
 		 * @param resource The resource representing the plugin.
		 *
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion OSMF 1.0
		 */
		public function PluginManagerEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, resource:ResourceBase = null) {
			super(type, bubbles, cancelable);

			_resource = resource;
		}

		/**
		 * The resource representing the plugin.
		 *
		 *  @langversion 3.0
		 *  @playerversion Flash 10
		 *  @playerversion AIR 1.5
		 *  @productversion OSMF 1.0
		 */
		public function get resource():ResourceBase {
			return _resource;
		}

		/**
		 * @private
		 */
		override public function clone():Event {
			return new PluginManagerEvent(type, bubbles, cancelable, _resource);
		}

		private var _resource:ResourceBase;
	}
}